Programmable devices such as computing devices, “smart” appliances and the like are typically capable of serving one or more purposes defined by the operating system used by the programmable devices and one or more application programs that are installed on the programmable devices. To deploy and provision a programmable device, a user typically has to sequentially and manually install an operating system, install one or more application programs, and configure the operating system and application program to work with each other. This process can be very time consuming depending on the complexity of the operating system and application program in question, and more typically requires complex scripts and custom development. It is not uncommon in a corporate or commercial setting that this process has to be repeated for hundreds or thousands of programmable devices.
The time consuming nature of provisioning programmable devices is also troublesome when a particular device fails or experiences an error. For example, if a programmable device has to be replaced, a service provider has to manually install an operating system, an application program and configure a new programmable device to replace the one that failed. This process may take hours to complete, and in the meantime a customer may experience problems such as losing sales, etc.
Industry has recognized the above problems and are developing vastly different techniques for bringing programmable devices on-line. For example, techniques have been developed for automating the provisioning of a programmable device. Techniques have also been developed for automating portions of the deployment of the programmable device. These proprietary techniques result in a high level of expertise that is needed on site to deploy and provision the programmable device, which mandates experienced, expensive, and hard to find personnel.
Additionally, computer services to handle specific tasks have been formed to help consumers. For example, services are provided that provision programmable devices. These computer services make it easier for the end consumer. However, the services do not reduce the labor involved in deploying and provisioning programmable devices in large numbers. Some services result in an increase in the labor involved in deploying and provisioning and maintaining programmable devices in large numbers. Additionally, these services provide no mechanism for third parties to add value-added tools into the deployment and provisioning process.
A related problem is that once a programmable device is deployed and provisioned, the user/owner is unlikely to reprovision the programmable device due to the high costs. Moreover, many of the techniques are closely tied to the underlying hardware. As the hardware evolves, original equipment manufacturers (“OEMs”) provide utilities to configure the hardware. These utilities are often not compatible with the proprietary techniques and result in increased labor to administer the hardware. As a result, these proprietary techniques often lead to an increase in the amount of labor and the skill level required to support the programmable devices and the underlying hardware.